#ifndef _ASYNIOIMPL_H_
#define _ASYNIOIMPL_H_

#include "stdafx.h"
#include <mem/imempool.h>

class CMemPoolImpl :	public	IMemPool,
						public  IPlugin,
						public  IPluginRun,
						public	CUnknownImp
{
public:
	CMemPoolImpl(void);
	virtual ~CMemPoolImpl(void);
	
	BEGIN_STDCOM_MAP
		STDCOM_INTERFACE_ENTRY_UNKNOWN_(IMemPool)
		STDCOM_INTERFACE_ENTRY(IPlugin)
		STDCOM_INTERFACE_ENTRY(IPluginRun)
		STDCOM_INTERFACE_ENTRY(IMemPool)
	END_STDCOM_MAP

	//IPlugin
	std_method(Init)(int Argc, basic_tchar* Argv[], IBase* pRot, IBase* pBase);
	std_method(Uninit)();
	
	//IPluginRun
	std_method(Start)(_pinstance hInstance, UINT uType);
	std_method(Stop)(UINT uExitCode);
	
	//IMemPool
	std_method_(void*, Malloc)(size_t size);
	std_method_(void*, Calloc)(size_t num, size_t size);
	std_method_(void*, Realloc)(void *ptr, size_t size);
	std_method(Free)(void* ptr);

private:
	RotPtr m_pRot;


};
#endif
